package gervosou;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.DropMode;
import java.awt.Color;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.util.GregorianCalendar;

import javax.swing.ButtonGroup;
import javax.swing.JSeparator;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JRadioButton;
import javax.swing.SwingConstants;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JComboBox;

public class VueNouvMandataire extends Vue {

	/**
	 * 
	 */
	
	private Societe _societe ;
	private CompteSociete _compte ;
	
	//private static final long serialVersionUID = 5069349224425178639L;
	private JPanel contentPane;
	
	private JTextField textFieldNumSiret;
	private JTextField textFieldNum;
	private JTextField textFieldNomDirecteur;
	private JTextField textFieldAdresseS;
	
	private JButton btnRechercher;
	private JButton btnAnnuler1;
	private JButton btnSelectionner;
	private JButton btnQuitter;
	private JButton btnEnregistrer;
	private JButton btnAnnuler2;
	
	private JRadioButton rdbtnA;
	private JRadioButton rdbtnB;
	private JRadioButton rdbtnC;

	private JTextField textFieldDateN;
	private JTextField textFieldNom;
	private JTextField textFieldPrenom;
	private JTextField textFieldAdresseM;

	private final ButtonGroup buttonGroup = new ButtonGroup();

	// a ajouter car la vue est observatrice d'un mandataire
	
		private Mandataire _mandataire ;
		private JLabel lblDateNaissance;
		private JLabel label;
		private JLabel labelPrenom;
		private JLabel label_2;
		private JComboBox comboBoxNumCompte;
		private JTextField textField;
		
	/**
	 * Create the frame.
	 */
	public VueNouvMandataire(Controleur controleur) {
		super (controleur);
		setTitle("Enregistrement d'un nouveau mandataire");
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setBounds(100, 100, 450, 715);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JLabel lblNum = new JLabel("Numéro Siret : ");
		lblNum.setBounds(41, 129, 99, 16);
		contentPane.add(lblNum);
		
		btnAnnuler2 = new JButton("Annuler");
		btnAnnuler2.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getControleur().fermerVue(VueNouvMandataire.this);
			}
		});
		btnAnnuler2.setBounds(69, 647, 117, 29);
		contentPane.add(btnAnnuler2);
		
		JLabel lblNomDirecteur = new JLabel("Nom directeur : ");
		lblNomDirecteur.setBounds(41, 175, 99, 16);
		contentPane.add(lblNomDirecteur);
		
		JLabel lblAdresse = new JLabel("Adresse : ");
		lblAdresse.setBounds(79, 215, 61, 16);
		contentPane.add(lblAdresse);
		
		textFieldAdresseS = new JTextField();
		textFieldAdresseS.setColumns(10);
		textFieldAdresseS.setBounds(158, 209, 222, 28);
		contentPane.add(textFieldAdresseS);
		
		lblDateNaissance = new JLabel("Date de naissance : (JJ/MM/AAAA)");
		lblDateNaissance.setBounds(12, 566, 214, 16);
		contentPane.add(lblDateNaissance);
		
		JLabel lblNumSiret = new JLabel("Num Siret : ");
		lblNumSiret.setBounds(58, 33, 82, 16);
		contentPane.add(lblNumSiret);
		
		textFieldNumSiret = new JTextField();
		textFieldNumSiret.setColumns(10);
		textFieldNumSiret.setBounds(158, 28, 222, 28);
		contentPane.add(textFieldNumSiret);
		
		btnRechercher = new JButton("Rechercher");
		btnRechercher.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				String num = textFieldNumSiret.getText();
				getControleur().rechSociete((num));
			}
		});
		btnRechercher.setBounds(255, 68, 117, 28);
		contentPane.add(btnRechercher);
		
		btnQuitter = new JButton("Quitter");
		btnQuitter.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getControleur().fermerVue(VueNouvMandataire.this);
			}
		});
		btnQuitter.setBounds(69, 68, 117, 29);
		contentPane.add(btnQuitter);
		
		JSeparator separator = new JSeparator();
		separator.setBounds(79, 109, 269, 2);
		contentPane.add(separator);
		
		JLabel lblAutorisation = new JLabel("Autorisation : ");
		lblAutorisation.setBounds(12, 599, 94, 15);
		contentPane.add(lblAutorisation);
		
		
		rdbtnA = new JRadioButton("A");
		rdbtnA.setHorizontalAlignment(SwingConstants.CENTER);
		rdbtnA.setBounds(69, 607, 61, 28);
		buttonGroup.add(rdbtnA);
		contentPane.add(rdbtnA);
		
		rdbtnB = new JRadioButton("B");
		rdbtnB.setHorizontalAlignment(SwingConstants.CENTER);
		rdbtnB.setBounds(194, 607, 61, 28);
		buttonGroup.add(rdbtnB);
		contentPane.add(rdbtnB);
		
		rdbtnC = new JRadioButton("C");
		rdbtnC.setHorizontalAlignment(SwingConstants.CENTER);
		rdbtnC.setBounds(319, 607, 61, 28);
		buttonGroup.add(rdbtnC);
		contentPane.add(rdbtnC);
		
		btnEnregistrer = new JButton("Enregistrer");
		btnEnregistrer.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				String nom = textFieldNom.getText();
				String prenom = textFieldPrenom.getText();
				String adresse = textFieldAdresseM.getText();
				String dn = textFieldDateN.getText();
				char auto = 'n';
				if (rdbtnA.isSelected()){
					auto = 'a';
				}
				else if (rdbtnB.isSelected()){
					auto = 'b';
				}
				else if (rdbtnC.isSelected()){
					auto = 'c';
				}
				getControleur().nouvMandataire(nom, prenom, adresse, dn, auto);
				/*CompteSociete cs = getControleur().rechCompteSociete(Integer.parseInt(textField.getText()));
				Mandataire man = getControleur().rechMandataire(nom+prenom);*/
			}
		});
		
		btnEnregistrer.setBounds(255, 648, 117, 28);
		contentPane.add(btnEnregistrer);
		
		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setBounds(158, 271, 48, 73);
		contentPane.add(scrollPane);
		
		comboBoxNumCompte = new JComboBox();
		scrollPane.setViewportView(comboBoxNumCompte);
		
		JLabel lblNumroDeCompte = new JLabel("Numéro de compte : ");
		lblNumroDeCompte.setBounds(7, 271, 142, 15);
		contentPane.add(lblNumroDeCompte);
		
		btnSelectionner = new JButton("Selectionner");
		btnSelectionner.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				textField.setText(String.valueOf(comboBoxNumCompte.getSelectedItem()));
				int numCompte = Integer.parseInt(textField.getText());
				setCompteSociete (getControleur().rechCompteSociete(numCompte));
			}
		});
		btnSelectionner.setBounds(260, 356, 117, 28);
		contentPane.add(btnSelectionner);
		
		btnAnnuler1 = new JButton("Annuler");
		btnAnnuler1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getControleur().changerEtatVueNouvMandataire();
				
			}
		});
		btnAnnuler1.setBounds(74, 356, 117, 29);
		contentPane.add(btnAnnuler1);
		
		JSeparator separator_1 = new JSeparator();
		separator_1.setBounds(79, 412, 269, 2);
		contentPane.add(separator_1);
		
		label = new JLabel("Nom : ");
		label.setBounds(12, 437, 99, 16);
		contentPane.add(label);
		
		labelPrenom = new JLabel("Prenom : ");
		labelPrenom.setBounds(12, 483, 99, 16);
		contentPane.add(labelPrenom);
		
		label_2 = new JLabel("Adresse : ");
		label_2.setBounds(12, 523, 99, 16);
		contentPane.add(label_2);
		
		textFieldNom = new JTextField();
		textFieldNom.setColumns(10);
		textFieldNom.setBounds(158, 436, 222, 28);
		contentPane.add(textFieldNom);
		
		textFieldNum = new JTextField();
		textFieldNum.setColumns(10);
		textFieldNum.setBounds(158, 128, 222, 28);
		contentPane.add(textFieldNum);
		
		textFieldNomDirecteur = new JTextField();
		textFieldNomDirecteur.setColumns(10);
		textFieldNomDirecteur.setBounds(158, 169, 222, 28);
		contentPane.add(textFieldNomDirecteur);
		
		textFieldPrenom = new JTextField();
		textFieldPrenom.setColumns(10);
		textFieldPrenom.setBounds(158, 476, 222, 28);
		contentPane.add(textFieldPrenom);
		
		textFieldAdresseM = new JTextField();
		textFieldAdresseM.setColumns(10);
		textFieldAdresseM.setBounds(158, 522, 222, 28);
		contentPane.add(textFieldAdresseM);
		
		textFieldDateN = new JTextField();
		textFieldDateN.setColumns(10);
		textFieldDateN.setBounds(238, 565, 142, 28);
		contentPane.add(textFieldDateN);
		
		textField = new JTextField();
		textField.setBounds(234, 288, 114, 38);
		contentPane.add(textField);
		textField.setColumns(10);

	}
	
	public void setEtat (int etat){
		switch (etat) {
		case initiale: {
			textFieldNumSiret.setEditable(true);
			textFieldNum.setEditable(false);
			textFieldNomDirecteur.setEditable(false);
			textFieldAdresseS.setEditable(false);
			textField.setVisible(false);

			textFieldDateN.setEditable(false);
			textFieldNom.setEditable(false);
			textFieldPrenom.setEditable(false);
			textFieldAdresseM.setEditable(false);

			btnQuitter.setEnabled(true);
			btnRechercher.setEnabled(true);
			btnAnnuler1.setEnabled(false);
			btnSelectionner.setEnabled(false);
			btnAnnuler2.setEnabled(false);
			btnEnregistrer.setEnabled(false);
			
			rdbtnA.setEnabled(false);
			rdbtnB.setEnabled(false);
			rdbtnC.setEnabled(false);

			break;
			}
		case inter1: {
			textFieldNumSiret.setEditable(false);
			textFieldNum.setEditable(false);
			textFieldNomDirecteur.setEditable(false);
			textFieldAdresseS.setEditable(false);
			textField.setVisible(false);

			textFieldDateN.setEditable(false);
			textFieldNom.setEditable(false);
			textFieldPrenom.setEditable(false);
			textFieldAdresseM.setEditable(false);

			btnQuitter.setEnabled(true);
			btnRechercher.setEnabled(false);
			btnAnnuler1.setEnabled(true);
			btnSelectionner.setEnabled(true);
			btnAnnuler2.setEnabled(false);
			btnEnregistrer.setEnabled(false);
			
			rdbtnA.setEnabled(false);
			rdbtnB.setEnabled(false);
			rdbtnC.setEnabled(false);

			break;
			}
		case finale: {
			textFieldNumSiret.setEditable(false);
			textFieldNum.setEditable(false);
			textFieldNomDirecteur.setEditable(false);
			textFieldAdresseS.setEditable(false);
			textField.setVisible(false);

			textFieldDateN.setEditable(true);
			textFieldNom.setEditable(true);
			textFieldPrenom.setEditable(true);
			textFieldAdresseM.setEditable(true);

			btnQuitter.setEnabled(true);
			btnSelectionner.setEnabled(false);
			btnAnnuler1.setEnabled(false);
			btnRechercher.setEnabled(false);
			btnAnnuler2.setEnabled(true);
			btnEnregistrer.setEnabled(true);
			
			rdbtnA.setEnabled(true);
			rdbtnB.setEnabled(true);
			rdbtnC.setEnabled(true);
			break;
			}
		}
	}
	
	private CompteSociete getCompteSociete() {
		return _compte;
	}
	private void setCompteSociete(CompteSociete com) {
		 _compte = com;
	}
	
	public void alimenteInfoSociete(Societe soc) {
		textFieldAdresseS.setText(soc.getAdresse());
		textFieldNum.setText(soc.getSiret());
		textFieldNomDirecteur.setText(soc.getNomDirecteur());
		for (CompteSociete cs : soc.getComptesSociete()) {
			comboBoxNumCompte.addItem(cs.getNumero());
		}
	}
}
